iT邦幫忙

2021 iThome 鐵人賽

DAY 23
0

Portal為不產生parent節點的情形下,將children渲染到DOM節點上面的方法。起手的宣告方式如下:

ReactDOM.createPortal(child, container)

第一個參數child可放入任一個React元素,例如 element、string 或者 fragment。
第二個參數放任一DOM節點。

使用時機

當parent節點設有overflow: hidden 或者 z-index等樣式時,若需要子節點傳遞到外部的情況時便可以使用,如一些hover效果或是彈窗。

使用方式

通常當 component 的render方法回傳一個React元素時,此元素會作為 child 被傳進最接近的parent節點中:

render() {
  // React 產生一個新的 div 並將 children 渲染 進去
  return (
    <div>
      {this.props.children}
    </div>
  );
}

使用portal將children傳進parent節點之外:

render() {
  // 不產生div(parent節點),將child放入其他任一DOMNode中
  return ReactDOM.createPortal(
    this.props.children,
   DOMNode
  );
}

上一篇
Day22 Create-react-app開發React
下一篇
Day24 React專案資料夾分類方式
系列文
React自我學習心得30天~30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言